package com.yidu.hbats.service.NutritionAtsScheme;

import com.github.pagehelper.PageHelper;
import com.yidu.hbats.action.vo.NutritionAtsSchemeVo;
import com.yidu.hbats.dao.AtsSchemeAthleteMapper;
import com.yidu.hbats.dao.AtsSchemeMapper;
import com.yidu.hbats.model.AtsScheme;
import com.yidu.hbats.model.AtsSchemeAthlete;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @version V1.0
 * @描述：营养方案实现类 方案表
 * @backage: com.liandyao.hbats.dao
 * @Author: 元气轩轩
 * @Date: 2019/11/21
 * @Description //TODO
 **/

@Service
public class NutritionAtsSchemeServiceImpl implements NutritionAtsSchemeService
{

    Logger logger= LoggerFactory.getLogger(getClass());

    //方案表的dao
    @Resource
    AtsSchemeMapper atsSchemeMapper;

    //方案对应的运动员表的dao
    @Resource
    AtsSchemeAthleteMapper atsSchemeAthleteMapper;

    /**
     * 查询所有带分页
     * @param atsScheme
     * @return
     */
    @Override
    public List<AtsScheme> selectAll1(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectAll1(atsScheme);
    }

    /**
     * 查询总行数
     * @param atsScheme
     * @return
     */
    @Override
    public int selectCountone(AtsScheme atsScheme) {
        return atsSchemeMapper.selectCountone(atsScheme);
    }

    /**
     * 查询所有带分页
     * @param atsScheme
     * @return
     *//*
    @Override
    public List<AtsScheme> selectAll1(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectAll1(atsScheme);
    }

    *//**
     * 查询所有不带分页
     * @param atsScheme
     * @return
     *//**//*
    @Override
    public List<AtsScheme> findAll(AtsScheme atsScheme) {
        return atsSchemeMapper.findAll(atsScheme);
    }
*//*
    *//**
     * 查询总行数
     * @param atsScheme
     * @return
     *//*
    @Override
    public int selectCount1(AtsScheme atsScheme) {
        return atsSchemeMapper.selectCount1(atsScheme);
    }*/


    /**
     * 新增
     * @param record
     */
    @Override
    public void insertSelective(NutritionAtsSchemeVo record) {
        //得到日历类对象
        Calendar cal = Calendar.getInstance();
        //得到月份
        int month = cal.get(Calendar.MONTH) + 1;
        //得到年份
        int year = cal.get(Calendar.YEAR);
        //默认有效值传1
        record.setIsva(1);
        //new出日期类
        Date utilDate = new Date();//util.Date
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        //传入当前的创建时间
        record.setCreatTime(sqlDate);
        //因为是营养方案，默认传2进去
        record.setSchemeType("2");
        //传入当前年份
        record.setYear(year);
        //传入当前月份
        record.setMonth(month);
        //传入前台session传过来的教练员名字
        record.setCreater(record.getUserName());
        //传入教练员名字
        record.setCoachName(record.getUserName());
        //new出方案表对象
        AtsScheme atsScheme=new AtsScheme();
        //调用copy方法
        BeanUtils.copyProperties(record,atsScheme);
        //调用方案表的增加方法
        atsSchemeMapper.insertSelective(atsScheme);
        //判断前台传过来的运动员id不等于空
        if(record.getSportId()!=null &&!"".equals(record.getSportId())){
            //new出方案对应的运动员表
            AtsSchemeAthlete atsSchemeAthlete=new AtsSchemeAthlete();
            atsSchemeAthlete.setIsva(1);
            atsSchemeAthlete.setIsRead("0");
            Date utilDateone = new Date();//util.Date
            java.sql.Date sqlDateone = new java.sql.Date(utilDateone.getTime());
            atsSchemeAthlete.setCreatTime(sqlDateone);
            //传入创建人
            atsSchemeAthlete.setCreater(record.getUserName());
            //定义运动员id数组分割
            String[] arr=record.getSportId().split(",");
            //定义运动员名字数组分割
            String[] arrName=record.getSportName().split(",");
            for (int i = 0; i < arr.length; i++) {
                String ids = arr[i];
                String idsName=arrName[i];
                if (StringUtils.isEmpty(ids)) {
                    continue;
                }
                if (StringUtils.isEmpty(idsName)) {
                    continue;
                }
                //传入分割后的运动员id
                atsSchemeAthlete.setAthleteId(Integer.valueOf(ids));
                //传入分割后的运动员name
                atsSchemeAthlete.setAthleteName(idsName);
                //传入方案名字
                atsSchemeAthlete.setSchemeName(record.getSchemeName());
                //传入方案id
                atsSchemeAthlete.setSchemeId(atsScheme.getSchemeId());
                //调用增加方法
                atsSchemeAthleteMapper.insertSelective(atsSchemeAthlete);
            }
        }
    }

    /**
     * 修改
     * @param record
     */
    @Override
    public void updateByPrimaryKeySelective(NutritionAtsSchemeVo record) {
        //得到atsScheme模型层
        AtsScheme atsScheme=new AtsScheme();
        //得到当前时间
        Date utilDate = new Date();//util.Date
        //只包含日期部分不包括时间部分数据库的读写
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        //传入当前的创建时间
        atsScheme.setCreatTime(sqlDate);
        //调用copy方法
        BeanUtils.copyProperties(record,atsScheme);
        //调用方案表的修改方法
        atsSchemeMapper.updateByPrimaryKeySelective(atsScheme);
        //new出方案对应的运动员表
        AtsSchemeAthlete atsSchemeAthleteone=new AtsSchemeAthlete();
        //默认有效值传0
        atsSchemeAthleteone.setIsva(0);
        atsSchemeAthleteone.setSchemeId(record.getSchemeId());
        int rows=atsSchemeAthleteMapper.updateByPrimaryKeySelectivethree(atsSchemeAthleteone);
        if(rows>0){
            //判断前台传过来的运动员id不等于空
            if(record.getSportId()!=null &&!"".equals(record.getSportId())){
                //new出方案对应的运动员表
                AtsSchemeAthlete atsSchemeAthlete=new AtsSchemeAthlete();
                atsSchemeAthlete.setIsva(1);
                atsSchemeAthlete.setIsRead("0");
                Date utilDateone = new Date();//util.Date
                java.sql.Date sqlDateone = new java.sql.Date(utilDateone.getTime());
                atsSchemeAthlete.setCreatTime(sqlDateone);
                //传入创建人
                atsSchemeAthlete.setCreater(record.getUserName());
                //定义运动员id数组分割
                String[] arr=record.getSportId().split(",");
                //定义运动员名字数组分割
                String[] arrName=record.getSportName().split(",");
                for (int i = 0; i < arr.length; i++) {
                    String ids = arr[i];
                    String idsName=arrName[i];
                    if (StringUtils.isEmpty(ids)) {
                        continue;
                    }
                    if (StringUtils.isEmpty(idsName)) {
                        continue;
                    }
                    //传入分割后的运动员id
                    atsSchemeAthlete.setAthleteId(Integer.valueOf(ids));
                    //传入分割后的运动员name
                    atsSchemeAthlete.setAthleteName(idsName);
                    //传入方案名字
                    atsSchemeAthlete.setSchemeName(record.getSchemeName());
                    //传入方案id
                    atsSchemeAthlete.setSchemeId(record.getSchemeId());
                    //调用增加方法
                    atsSchemeAthleteMapper.insertSelective(atsSchemeAthlete);
                }
            }
        }

    }
    /**
     * 根据id查询
     * @param schemeId
     * @return
     */
    @Override
    public AtsScheme findByIdOne(int schemeId) {
        return atsSchemeMapper.findByIdOne(schemeId);
    }

    /**
     * 逻辑删除
     * @param schemeId
     * @return
     */
    @Override
    public int updateByPrimaryKeySelectiveone(int schemeId) {
        int rows=atsSchemeMapper.updateByPrimaryKeySelectiveone(schemeId);
        if(!StringUtils.isEmpty(schemeId)){
            atsSchemeAthleteMapper.updateByPrimaryKeySelectiveFour(schemeId);
        }
        return rows;
    }

    /**
     * 根据主键查询所有
     * @param schemeId
     * @return
     */
    @Override
    public AtsScheme selectByPrimaryKey(Integer schemeId) {
        return atsSchemeMapper.selectByPrimaryKey(schemeId);
    }

    /**
     *
     * @param record
     * @return
     */
    @Override
    public int updateByPrimaryKeySelective(AtsScheme record) {
        return atsSchemeMapper.updateByPrimaryKeySelective(record);
    }

    @Override
    public List<AtsScheme> selectAuditAllOne(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectAuditAllOne(atsScheme);
    }

    @Override
    public int selectAuditAllCountOne(AtsScheme atsScheme) {
        return atsSchemeMapper.selectAuditAllCountOne(atsScheme);
    }

    @Override
    public List<AtsScheme> selectAthleteAllOnewx(AtsScheme atsScheme, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectAthleteAllOnewx(atsScheme);
    }

    @Override
    public int selectAthleteAllCountOnewx(AtsScheme atsScheme) {
        return atsSchemeMapper.selectAthleteAllCountOnewx(atsScheme);
    }
}
